package com.zxgj.datadirect.config;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import feign.Request;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Feign配置（身份认证、超时时间）
 */
@Configuration
public class FeignConfig {

    @Value("${datadirect.national.app-key}")
    private String appKey;

    @Value("${datadirect.national.app-secret}")
    private String appSecret;

    /**
     * 身份认证拦截器（生成Token并添加到请求头）
     */
    @Bean
    public RequestInterceptor authInterceptor() {
        return template -> {
            // 此处简化实现，实际需按国家平台签名规则生成Token
            String token = "Bearer " + generateToken(appKey, appSecret);
            template.header("Authorization", token);
            template.header("Content-Type", "application/json");
        };
    }

    /**
     * 生成身份认证Token（示例：Base64编码appKey:appSecret）
     */
    private String generateToken(String appKey, String appSecret) {
        String auth = appKey + ":" + appSecret;
        return java.util.Base64.getEncoder().encodeToString(auth.getBytes());
    }

    /**
     * 超时时间配置
     */
    @Bean
    public Request.Options feignOptions() {
        return new Request.Options(
                30000,  // 连接超时时间（毫秒）
                30000   // 读取超时时间（毫秒）
        );
    }
}